Programmable logic devices (PLDs) may be programmed to implement a wide variety of user functions. A PLD provides configurable resources of various types, including configurable logic resources, configurable routing resources, and configurable input/output resources. An example configurable logic resource is a programmable logic array (PLA) having a set of binary inputs, a set of binary outputs, and a set or internal binary product-terms. Each of the internal product-terms may be the AND of a configurable subset of the binary inputs, and each of the binary outputs may be the OR of a configurable subset of the internal product-terms. An example routing resource is a switchbox having a set of binary inputs and a set of binary outputs. Each of the binary outputs may be connected to a configurable one of the binary inputs. An example configurable input/output resource is an input/output block configurable to either drive a binary value to an external port of the PLD or receive a binary value from the external port.
A PLD is programmed to perform a specific user function by loading the PLD with configuration data that is generated from a specification of the specific user function. The configuration data provides the configuration for each of the configurable resources of the PLD. The loaded configuration data may be stored in volatile or non-volatile memory of the PLD.
The configurable resources of the PLD provide a set of building blocks that are frequently used by typical user functions. Generally, certain ones of the configurable resources may go unused by a specific user function. In addition, when a specific user function requires more of a particular type of configurable resource than is available in the PLD, the PLD may not be capable of implementing the function. Such functions may require burdensome modification of the user's design and/or use of a more expensive PLD with more configurable resources. There is a general need for PLD architectures that allow a wide variety of user functions to be efficiently implemented, especially for user functions with resource requirements near the limit of the capabilities of the PLD.
The present invention may address one or more of the above issues.